Chapter 2, float data type, 3 unix> cat float3.c #include void printfloat(float); main() { float x = 1; int i; printf("\n Dec Hex +- exp+127 1. fraction\n\n"); for (i = 1; i <= 32; i++) { printfloat(x); x = x * 2; } printf("\n"); } void printfloat(float x) { unsigned long i; union floatandlong { float asfloat; long aslong; } bits32; bits32.asfloat = x; printf(" %14.2f %8.8x ", bits32.asfloat, bits32.aslong); for (i = 0x80000000ul; i > 0; i>>=1) { if (i == 0x40000000ul) printf(" "); if (i == 0x00400000ul) printf(" "); printf("%c", (i & bits32.aslong ? '1' : '0')); } printf("\n"); } unix> gcc float3.c unix> ./a.out Dec Hex +- exp+127 1. fraction 1.00 3f800000 0 01111111 00000000000000000000000 2.00 40000000 0 10000000 00000000000000000000000 4.00 40800000 0 10000001 00000000000000000000000 8.00 41000000 0 10000010 00000000000000000000000 16.00 41800000 0 10000011 00000000000000000000000 32.00 42000000 0 10000100 00000000000000000000000 64.00 42800000 0 10000101 00000000000000000000000 128.00 43000000 0 10000110 00000000000000000000000 256.00 43800000 0 10000111 00000000000000000000000 512.00 44000000 0 10001000 00000000000000000000000 1024.00 44800000 0 10001001 00000000000000000000000 2048.00 45000000 0 10001010 00000000000000000000000 4096.00 45800000 0 10001011 00000000000000000000000 8192.00 46000000 0 10001100 00000000000000000000000 16384.00 46800000 0 10001101 00000000000000000000000 32768.00 47000000 0 10001110 00000000000000000000000 65536.00 47800000 0 10001111 00000000000000000000000 131072.00 48000000 0 10010000 00000000000000000000000 262144.00 48800000 0 10010001 00000000000000000000000 524288.00 49000000 0 10010010 00000000000000000000000 1048576.00 49800000 0 10010011 00000000000000000000000 2097152.00 4a000000 0 10010100 00000000000000000000000 4194304.00 4a800000 0 10010101 00000000000000000000000 8388608.00 4b000000 0 10010110 00000000000000000000000 16777216.00 4b800000 0 10010111 00000000000000000000000 33554432.00 4c000000 0 10011000 00000000000000000000000 67108864.00 4c800000 0 10011001 00000000000000000000000 134217728.00 4d000000 0 10011010 00000000000000000000000 268435456.00 4d800000 0 10011011 00000000000000000000000 536870912.00 4e000000 0 10011100 00000000000000000000000 1073741824.00 4e800000 0 10011101 00000000000000000000000 2147483648.00 4f000000 0 10011110 00000000000000000000000 unix>